home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-9.10-netbook-remix-PL.iso / casper / filesystem.squashfs / usr / share / m17n / si-wijesekera.mim < prev    next >
Text File  |  2009-04-29  |  11KB  |  591 lines

  1. ;; si-wijesekera.mim -- Sinhala input method with wijesekera method
  2. ;; Copyright (C) 2005, 2006, 2008
  3. ;;   National Institute of Advanced Industrial Science and Technology (AIST)
  4. ;;   Registration Number H15PRO112
  5.  
  6. ;; This file is part of the m17n database; a sub-part of the m17n
  7. ;; library.
  8.  
  9. ;; The m17n library is free software; you can redistribute it and/or
  10. ;; modify it under the terms of the GNU Lesser General Public License
  11. ;; as published by the Free Software Foundation; either version 2.1 of
  12. ;; the License, or (at your option) any later version.
  13.  
  14. ;; The m17n library is distributed in the hope that it will be useful,
  15. ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  17. ;; Lesser General Public License for more details.
  18.  
  19. ;; You should have received a copy of the GNU Lesser General Public
  20. ;; License along with the m17n library; if not, write to the Free
  21. ;; Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
  22. ;; Boston, MA 02110-1301, USA.
  23.  
  24. (input-method si wijesekera)
  25.  
  26. (description "Sinhala input method based on SLS 1134 Rev. 2:2004.
  27.   <http://www.fonts.lk/doc/sin-kbd-layout4.pdf>
  28. This input method requires surrounding text support.
  29. ")
  30.  
  31. (title "α╖âα╖Æ")
  32.  
  33. (macro
  34.  ;; skip following (virama zwj consonant)* sequence
  35.  (forward
  36.   (set cc3 @+3)
  37.   (cond
  38.    ((& (= @+1 0x0DCA) (= @+2 0x200D) (>= cc3 0x0D9A) (<= cc3 0x0DC6))
  39.     (delete @+3)
  40.     0x0DCA 0x200D
  41.     (insert cc3)
  42.     (forward))))
  43.  
  44.  (backward
  45.   (set cc1 @-1)
  46.   (cond
  47.    ((& (= @-3 0x0DCA) (= @-2 0x200D) (>= cc1 0x0D9A) (<= cc1 0x0DC6))
  48.     (delete @-3)
  49.     0x0DCA
  50.     0x200D
  51.     (insert cc1)
  52.     (move @<)
  53.     (backward))))
  54.  
  55.  (delete-preceding-zw
  56.   (cond
  57.    ((| (= @-1 0x200C) (= @-1 0x200D))
  58.     (delete @-1)
  59.     (delete-preceding-zw))))
  60.  
  61.  (delete-following-zw
  62.   (cond
  63.    ((| (= @+1 0x200C) (= @+1 0x200D))
  64.     (delete @+1)
  65.     (delete-following-zw))))
  66.  
  67.  (merge-kombuva
  68.   (delete @-1)
  69.   (delete @+2)
  70.   (insert c1)))
  71.  
  72. (map
  73.  (consonant
  74.   ("l" "α╢Ü")                ; 0D9A
  75.   ("L" "α╢¢")                ; 0D9B
  76.   ("." "α╢£")                ; 0D9C
  77.   (">" "α╢¥")                ; 0D9D
  78.   ("X" "α╢₧")                ; 0D9E
  79.   ((A-.) "α╢ƒ")                ; 0D9F
  80.   ("p" "α╢á")                ; 0DA0
  81.   ("P" "α╢í")                ; 0DA1
  82.   ("c" "α╢ó")                ; 0DA2
  83.   ("C" "α╢ú")                ; 0DA3
  84.   ("\[" "α╢ñ")                ; 0DA4
  85.   ("{" "α╢Ñ")                ; 0DA5
  86.   ((A-c) "α╢ª")                ; 0DA6
  87.   ("g" "α╢º")                ; 0DA7
  88.   ("G" "α╢¿")                ; 0DA8
  89.   ("v" "α╢⌐")                ; 0DA9
  90.   ("V" "α╢¬")                ; 0DAA
  91.   ("K" "α╢½")                ; 0DAB
  92.   ((A-v) "α╢¼")                ; 0DAC
  93.   (";" "α╢¡")                ; 0DAD
  94.   (":" "α╢«")                ; 0DAE
  95.   ("o" "α╢»")                ; 0DAF
  96.   ("O" "α╢░")                ; 0DB0
  97.   ("k" "α╢▒")                ; 0DB1
  98.   ((A-o) "α╢│")                ; 0DB3
  99.   ("m" "α╢┤")                ; 0DB4
  100.   ("M" "α╢╡")                ; 0DB5
  101.   ("n" "α╢╢")                ; 0DB6
  102.   ("N" "α╢╖")                ; 0DB7
  103.   ("u" "α╢╕")                ; 0DB8
  104.   ("U" "α╢╣")                ; 0DB9
  105.   ("h" "α╢║")                ; 0DBA
  106.   ("r" "α╢╗")                ; 0DBB
  107.   ("," "α╢╜")                ; 0DBD
  108.   ("j" "α╖Ç")                ; 0DC0
  109.   ("Y" "α╖ü")                ; 0DC1
  110.   ("I" "α╖é")                ; 0DC2
  111.   ("i" "α╖â")                ; 0DC3
  112.   ("y" "α╖ä")                ; 0DC4
  113.   ("<" "α╖à")                ; 0DC5
  114.   ("F" "α╖å")                ; 0DC6
  115.   )
  116.  
  117.  (misc
  118.   ("x" "α╢é")                ; 0D82
  119.   ((A-x) "α╢â")                ; 0D83
  120.  
  121.   ("w" "α╢à")                ; 0D85
  122.   ("b" "α╢ë")                ; 0D89
  123.   ("B" "α╢è")                ; 0D8A
  124.   ("W" "α╢ï")                ; 0D8B
  125.   ("R" "α╢ì")                ; 0D8D
  126.   ((A-,) "α╢Å")                ; 0D8F
  127.  
  128.   ("T" "α╢ö")                ; 0D94
  129.  
  130.   ("s" "α╖Æ")                ; 0DD2
  131.   ("S" "α╖ô")                ; 0DD3
  132.   ("q" "α╖ö")                ; 0DD4
  133.  
  134.   ("Q" "α╖û")                ; 0DD6
  135.  
  136.   ((A-a) "α╖│")                ; 0DF3
  137.   ((A-\') "α╖┤")                ; 0DF4
  138.  
  139.   ("\]" ";")
  140.   ("}" ":")
  141.   ("'" ".")
  142.   ("\"" ",")
  143.   ("z" "'")
  144.   ("Z" "\"")
  145.  
  146.   ("|" "ΓÇìα╖è")                ; touch (ZWJ 0DCA)
  147.   ("J" "α╖àα╖ö")                ; muurdhaja lu (0DC5 0DD4)
  148.   ((S-\ ) "┬á")                ; NBSP
  149.   ((A-\ ) "ΓÇî")                ; ZWNJ
  150.  
  151.   ("t"
  152.    (set c @-2)
  153.    (cond
  154.     ((= @-1 0x0DD9)
  155.      (cond
  156.       ((= c 0x200C)
  157.        (delete @-2)
  158.        0x0D93)
  159.       ((| (< c 0x0D9A) (> c 0x0DC6))
  160.        (delete @-1)
  161.        0x0D93)
  162.       (1
  163.        0x0D91)))
  164.     (1
  165.      0x0D91)))
  166.  
  167.   ("a"
  168.    (set c @-1)
  169.    (cond
  170.     ((= c 0x0D91)
  171.      (delete @-1)
  172.      0x0D92)
  173.     ((= c 0x0D94)
  174.      (delete @-1)
  175.      0x0D95)
  176.     ((= c 0x0DD9)
  177.      (delete @-1)
  178.      0x0DDA)
  179.     ((= c 0x0DDC)
  180.      (delete @-1)
  181.      0x0DDD)
  182.     (1
  183.      0x0DCA)))
  184.  
  185.   ("d"
  186.    (set c @-1)
  187.    (cond
  188.     ((= c 0x0D85)
  189.      (delete @-1)
  190.      0x0D86)
  191.     ((= c 0x0DD9)
  192.      (delete @-1)
  193.      0x0DDC)
  194.     (1
  195.      0x0DCF)))
  196.  
  197.   ("e"
  198.    (cond
  199.     ((= @-1 0x0D85)
  200.      (delete @-1)
  201.      0x0D87)
  202.     (1
  203.      0x0DD0)))
  204.  
  205.   ("E"
  206.    (set c @-1)
  207.    (cond
  208.     ((= c 0x0D85)
  209.      (delete @-1)
  210.      0x0D88)
  211.     ((= c 0x0DD4)
  212.      (cond
  213.       ((= @-2 0x0DC5)
  214.        (delete @-1)
  215.        0x0DD6)
  216.       (1
  217.        0x0DD1)))
  218.     (1
  219.      0x0DD1)))     
  220.  
  221.   ("D"
  222.    (set c @-1)
  223.    (cond
  224.     ((= c 0x0D8D)
  225.      (delete @-1)
  226.      0x0D8E)
  227.     ((= c 0x0DD8)
  228.      (delete @-1)
  229.      0x0DF2)
  230.     (1
  231.      0x0DD8)))
  232.  
  233.   ("A"
  234.    (set c @-1)
  235.    (cond
  236.     ((= c 0x0D8B)
  237.      (delete @-1)
  238.      0x0D8C)
  239.     ((= c 0x0D8F)
  240.      (delete @-1)
  241.      0x0D90)
  242.     ((= c 0x0D94)
  243.      (delete @-1)
  244.      0x0D96)
  245.     ((= c 0x0DD9)
  246.      (delete @-1)
  247.      0x0DDE)
  248.     (1
  249.      0x0DDF)))
  250.  
  251.   ("f"
  252.    (set c @+1)
  253.    (cond
  254.     ((& (>= c 0x0D9A) (<= c 0x0DC6))
  255.      (delete @+1)
  256.      (insert c)
  257.      (forward)
  258.      (set c @+1)
  259.      (cond
  260.       ((= c 0x0DCA)
  261.        (delete @+1)
  262.        0x0DDA)
  263.       ((= c 0x0DD9)
  264.        (delete @+1)
  265.        0x0DDB)
  266.       ((= c 0x0DCF)
  267.        (delete @+1)
  268.        0x0DDC)
  269.       ((= c 0x0DDF)
  270.        (delete @+1)
  271.        0x0DDE)
  272.       (1
  273.        0x0DD9)))
  274.     ((= c 0x0D91)
  275.      (delete @+1)
  276.      0x0D93)
  277.     ((= c 0x0DD9)
  278.      (delete @+1)
  279.      0x0DDB)
  280.     ((& (= c 0x200C) (= @+2 0x0DD9))
  281.      (delete @+2)
  282.      0x200C 0x0DDB)
  283.     ((& (= @-1 0x0DD9)
  284.     (| (< @-2 0x0D9A) (> @-2 0x0DC6)))
  285.      (delete @-1)
  286.      0x0DDB)
  287.     ((& (>= @-1 0x0D9A) (<= @-1 0x0DC6))
  288.      0x200C 0x0DD9)
  289.     (1
  290.      0x0DD9)))
  291.    
  292.   ;; sanyaka letters
  293.   ((A-z)
  294.    (set c @-1)
  295.    (cond
  296.     ((= c 0x0DAF)
  297.      (delete @-1)
  298.      0x0DB3)
  299.     ((= c 0x0D9C)
  300.      (delete @-1)
  301.      0x0D9F)
  302.     ((= c 0x0DA9)
  303.      (delete @-1)
  304.      0x0DAC)
  305.     ((= c 0x0DA2)
  306.      (delete @-1)
  307.      0x0DA6)))
  308.  
  309.   ;; yansaya
  310.   ("H"
  311.    (set c @-1)
  312.    (cond
  313.     ((= c 0x0DD9)
  314.      (delete @-1))
  315.     ((= c 0x0DDB)
  316.      (delete @-1))
  317.     (1
  318.      (set c 0)))
  319.    (cond
  320.     ((& (>= @-1 0x0D9A) (<= @-1 0x0DC6))
  321.      0x0DCA 0x200D 0x0DBA))
  322.    (cond
  323.     ((> c 0)
  324.      (insert c))))
  325.  
  326.   ;; rakaransaya
  327.   ("`"
  328.    (set c @-1)
  329.    (cond
  330.     ((| (= c 0x0DD9) (= c 0x0DDB) (= c 0x0DD2) (= c 0x0DD3))
  331.      (delete @-1))
  332.     (1
  333.      (set c 0)))
  334.    (cond
  335.     ((& (>= @-1 0x0D9A) (<= @-1 0x0DC6))
  336.      0x0DCA 0x200D 0x0DBB))
  337.    (cond
  338.     ((> c 0)
  339.      (insert c))))
  340.  
  341.   ;; repaya
  342.   ("~"
  343.    (set c @-1)
  344.    (cond
  345.     ((| (= c 0x0DD9) (= c 0x0DDB))
  346.      (delete @-1))
  347.     (1
  348.      (set c 0)))
  349.    (backward)
  350.    (cond
  351.     ((& (>= @-1 0x0D9A) (<= @-1 0x0DC6))
  352.      (set c1 @-1)
  353.      (delete @-1)
  354.      (insert c1)
  355.      (move @<)
  356.      0x0DBB 0x0DCA 0x200D))
  357.    (cond
  358.     ((> c 0)
  359.      (move @>)
  360.      (insert c))))
  361.  
  362.   ((BackSpace)
  363.    (delete-preceding-zw)
  364.    (set c @-1)
  365.    (cond
  366.     ((< c 0)
  367.      (unhandle)))
  368.    (delete @-1)
  369.    (cond
  370.     ((= c 0x0D86)
  371.      0x0D85)
  372.     ((= c 0x0D87)
  373.      0x0D85)
  374.     ((= c 0x0D88)
  375.      0x0D85)
  376.     ((= c 0x0D8C)
  377.      0x0D8B)
  378.     ((= c 0x0D8E)
  379.      0x0D8D)
  380.     ((= c 0x0D90)
  381.      0x0D8F)
  382.     ((= c 0x0D92)
  383.      0x0D8F)
  384.     ((= c 0x0D93)
  385.      (cond ((& (>= @-1 0x0D9A) (<= @-1 0x0DC6)) 0x200C))
  386.      0x0DD9)
  387.     ((= c 0x0D95)
  388.      0x0D94)
  389.     ((= c 0x0D96)
  390.      0x0D94)
  391.  
  392.     ((& (>= c 0x0D9A) (<= c 0x0DC6) (= @-2 0x0DCA) (= @-1 0x200D))
  393.      (cond
  394.       ((= @-3 0x0DBB)
  395.        (delete @-3)
  396.        (insert c))
  397.       (1
  398.        (delete @-2))))
  399.  
  400.     ((= c 0x0DD9)
  401.      (cond
  402.       ((| (< @-1 0x0D9A) (> @-1 0x0DC6)))
  403.       ((= @+1 0x0D91)
  404.        (delete @-1)
  405.        (delete @+1)
  406.        0x0D93)
  407.       ((& (>= @+1 0x0D9A) (<= @+1 0x0DC6))
  408.        (set c1 @+1)
  409.        (cond
  410.     ((= @+2 0x0DD9)
  411.      (merge-kombuva)
  412.      0x0DDB)
  413.     ((= @+2 0x0DCA)
  414.      (merge-kombuva)
  415.      0x0DDA)
  416.     ((= @+2 0x0DCF)
  417.      (merge-kombuva)
  418.      0x0DDC)
  419.     ((= @+2 0x0DDF)
  420.      (merge-kombuva)
  421.      0x0DDE)
  422.     (1
  423.      (delete @-1)
  424.      (delete @+1)
  425.      (insert c1)
  426.      0x0DD9)))
  427.       ((& (>= @-2 0x0D9A) (<= @-2 0x0DC6))
  428.        (delete @-1)
  429.        0x200C
  430.        0x0DD9)
  431.       ((& (= @-4 0x0DBB) (= @-3 0x0DCA) (= @-2 0x200D))
  432.        (set c1 @-1)
  433.        (delete @-4)
  434.        (insert c1)
  435.        0x0DD9)
  436.       ((& (>= @-4 0x0D9A) (<= @-4 0x0DC6) (= @-3 0x0DCA) (= @-2 0x200D))
  437.        (delete @-3)
  438.        0x0DD9)
  439.       (1
  440.        (delete @-1)
  441.        0x0DD9)))
  442.  
  443.     ((= c 0x0DDA)
  444.      0x0DD9)
  445.  
  446.     ((= c 0x0DDB)
  447.      (cond
  448.       ((| (< @-1 0x0D9A) (> @-1 0x0DC6))
  449.        0x0DD9)
  450.       ((& (>= @-2 0x0D9A) (<= @-2 0x0DC6))
  451.        (delete @-1)
  452.        0x200C
  453.        0x0DDB)
  454.       ((& (= @-4 0x0DBB) (= @-3 0x0DCA) (= @-2 0x200D))
  455.        (set c1 @-1)
  456.        (delete @-4)
  457.        (insert c1)
  458.        0x0DDB)
  459.       ((& (>= @-4 0x0D9A) (<= @-4 0x0DC6) (= @-3 0x0DCA) (= @-2 0x200D))
  460.        (delete @-3)
  461.        0x0DDB)
  462.       (1
  463.        (delete @-1)
  464.        0x0DDB)))
  465.  
  466.     ((= c 0x0DDC)
  467.      0x0DD9)
  468.     ((= c 0x0DDD)
  469.      0x0DDC)
  470.     ((= c 0x0DDE)
  471.      0x0DD9)
  472.     ((= c 0x0DF2)
  473.      0x0DD8))
  474.  
  475.    (cond
  476.     ((& (>= @-1 0x0D9A)
  477.     (<= @-1 0x0DC6)
  478.     (| (= @+1 0x0DD9) (= @+1 0x0DDB)))
  479.      0x200C)))
  480.  
  481.   ((Delete)
  482.    (delete-following-zw)
  483.    (set c @+1)
  484.    (cond
  485.     ((< c 0)
  486.      (unhandle)))
  487.    (delete @+1)
  488.    (cond
  489.     ((= c 0x0D86)
  490.      0x0DCF)
  491.     ((= c 0x0D87)
  492.      0x0DD0)
  493.     ((= c 0x0D88)
  494.      0x0DD1)
  495.     ((= c 0x0D8C)
  496.      0x0DDF)
  497.     ((= c 0x0D8E)
  498.      0x0DD8)
  499.     ((= c 0x0D90)
  500.      0x0DDF)
  501.     ((= c 0x0D92)
  502.      0x0DCA)
  503.     ((= c 0x0D93)
  504.      0x0D91)
  505.     ((& (>= c 0x0D9A) (<= c 0x0DC6))
  506.      (forward)
  507.      (cond
  508.       ((= @+1 0x0DD9)
  509.        (delete @+1)
  510.        (move @<)
  511.        (insert c))
  512.       ((= @+1 0x0DDB)
  513.        (delete @+1)
  514.        0x0DD9
  515.        (move @<)
  516.        (insert c))
  517.       ((= @+1 0x0DDA)
  518.        (delete @+1)
  519.        0x0DCA
  520.        (move @<)
  521.        (insert c))
  522.       ((= @+1 0x0DDC)
  523.        (delete @+1)
  524.        0x0DCF
  525.        (move @<)
  526.        (insert c))
  527.       ((= @+1 0x0DDE)
  528.        (delete @+1)
  529.        0x0DDF
  530.        (move @<)
  531.        (insert c))
  532.       (1
  533.        (delete @<))))
  534.     ((= c 0x0DDB)
  535.      0x0DD9))))
  536.  
  537.  (join
  538.   ("\\")))
  539.  
  540. (state
  541.  (init
  542.   (consonant
  543.    (move @<)
  544.    (cond
  545.     ((= @-1 0x0DD9)
  546.      (cond
  547.       ((= @-2 0x200C)
  548.        (delete @-2)
  549.        (move @>)
  550.        0x0DD9)
  551.       ((| (< @-2 0x0D9A) (> @-2 0x0DC6))
  552.        (delete @-1)
  553.        (move @>)
  554.        0x0DD9)))
  555.     ((= @-1 0x0DDB)
  556.      (cond
  557.       ((= @-2 0x200C)
  558.        (delete @-2)
  559.        (move @>)
  560.        0x0DDB)
  561.       ((| (< @-2 0x0D9A) (> @-2 0x0DC6))
  562.        (delete @-1)
  563.        (move @>)
  564.        0x0DDB)))))
  565.   (misc)
  566.   (join (shift join)))
  567.  
  568.  (join
  569.   (consonant
  570.    (move @<)
  571.    (set c @-1)
  572.    (cond
  573.     ((| (= c 0x0DD9) (= c 0x0DDB))
  574.      (cond
  575.       ((& (>= @-2 0x0D9A) (<= @-2 0x0DC6))
  576.        (delete @-1)
  577.        0x0DCA 0x200D
  578.        (move @>)
  579.        (insert c))))
  580.     ((& (>= c 0x0D9A) (<= c 0x0DC6))
  581.      0x0DCA 0x200D))
  582.    (shift init))
  583.  
  584.   (nil
  585.    (shift init))))
  586.  
  587. ;; Local Variables:
  588. ;; coding: utf-8
  589. ;; mode: emacs-lisp
  590. ;; End:
  591.